export const getInputs = () => [['abc', 'dog cat dog']];

/**
 * **[290. 单词规律](https://leetcode.cn/problems/word-pattern/)**
 *
 * 给定一种规律 `pattern` 和一个字符串 `s` ，判断 `s` 是否遵循相同的规律。
 *
 * 这里的 **遵循** 指完全匹配，例如， `pattern` 里的每个字母和字符串 `s` 中的每个非空单词之间存在着双向连接的对应规律。
 *
 * @param pattern
 * @param s
 * @returns
 */
export default function (pattern: string, s: string): boolean {
	const pArr = pattern.split(''),
		sArr = s.split(' ');
	if (pArr.length !== sArr.length) return false;

	const psMap = new Map<string, string>();
	const spMap = new Map<string, string>();
	const length = pArr.length;

	for (let i = 0; i < length; i++) {
		const p = pArr[i],
			ss = sArr[i];

		const ps = psMap.get(p);
		const sp = spMap.get(ss);
		if (ps || sp) {
			if (ps !== ss || sp !== p) return false;
		} else {
			psMap.set(p, ss);
			spMap.set(ss, p);
		}
	}

	return true;
}
